home *** CD-ROM | disk | FTP | other *** search
Text File | 1992-10-30 | 13.1 KB | 427 lines | [TEXT/CCL2] |
- MCL 2.0p1 Release Notes
-
-
- This patch contains minor bug fixes we've accumulated over the
- several months since MCL 2.0 was frozen. Most of you can simply install
- the patch and ignore the extensive notes below; your experience of using
- MCL 2.0 should not change at all because of this patch.
-
- If you have any problems installing or using this patch, please let us
- know at
-
- bug-mcl@cambridge.apple.com
-
- Thanks for using our Lisp!
-
-
- Installation
-
- You probably received MCL 2.0p1.fasl in BinHex (.hqx) format. Before you
- can install the patch you will need to decode the BinHex, using an
- application (like StuffIt or Compact Pro) that knows how to deal with
- BinHex. You can also use the "BinHex" application shipped with MCL 2.0,
- in the "Examples:" folder.
-
- To install MCL 2.0p1, create a folder called "patches 2.0" in your
- MCL folder, put the decoded patch file into it, start up MCL,
- then type:
-
- (ccl::load-patches)
- (save-application "MCL 2.0p1" :init-file "init")
-
- When you start up the new MCL 2.0p1 application, it should know its
- new patch level:
-
- Welcome to Macintosh Common Lisp Version 2.0p1!
-
-
-
- Notes
-
- The following describes some of the contents of this patch. The
- "individual patch file" names are for our own bookkeeping. Most
- of this documentation is drawn from comments in the source code;
- much of it may seem cryptic, especially if you haven't encountered
- the bug yourself. Feel free to skim!
-
-
- Individual patch file: advise-patch.lisp
- Stop :after advice from consing the values list.
- Declare it to be dynamic-extent.
-
-
- Individual patch file: alias-patch.lisp
- Make probe-file work for both "foo:bar alias:" and "foo:bar alias".
- Make %path-getdirinfo look in desktop folder of all vols for aliases.
- Hack pb-resolve-alias to work for aliases on remote vols.
-
-
- Individual patch file: appleevents-patch.lisp
- Add 2 methods (open-application-document and print-application-document)
- which are called by open-documents-handler and print-documents-handler
- to actually do the open or print of a single file.
-
- open-application-document [Generic function]
- application path &optional startup
-
- open-application-document [Primary method]
- (application application) path &optional startup
-
- Open-application-document is called by the default startup code (which
- you get if you do not specify the :TOPLEVEL-FUNCTION keyword to
- SAVE-APPLICATION and when MCL receives an Open Document AppleEvent. It
- is called with a first argument of *APPLICATION*, a pathname for the
- second argument and no third argument (this is a bug in the patch, it
- should be called with a third argument of T when called by the startup
- code, and no third argument when an Open Document AppleEvent is
- received later on).
-
- The method specialized on APPLICATION will edit the file named by PATH
- in a Fred window if it is a text file or LOAD it if it is a fasl file.
- All other types of files are ignored.
-
- print-application-document [Generic function]
- application path &optional startup
-
- print-application-document [Primary method]
- (application application) path &optional startup
-
- Same as open-application-document, but is called in response to
- a Print Document AppleEvent. The patch does not cause
- print-application-document to be called by startup code. Hopefully,
- this bug will be fixed by patch 2.
-
- The method specialized on APPLICATION prints the file named by PATH
- by opening it in a Fred Window (with ED) and calling WINDOW-HARDCOPY.
-
- Examples:
-
- (defclass my-application (application) ())
-
- (setq *application* (make-instance 'my-application))
-
- (defmethod open-application-document ((app my-application) path &optional startup)
- (declare (ignore startup))
- (open-my-application-document path))
-
- (defmethod print-application-document ((app my-application) path &optional startup)
- (declare (ignore startup))
- (print-my-application-document path))
-
-
- Individual patch file: ash-compiler-macro-patch.lisp
- Make ash compile in-line a little more often.
-
-
- Individual patch file: big-time-patch.lisp
- Make MCL's universal time stuff work for years up to 29936
- Also, call get-time-zone minimally. It takes 2.5 milliseconds
- to read the parameter RAM!
-
-
- Individual patch file: c-m-h-patch.lisp
- Fix ed-select-top-level-sexp (c-m-h) when at end by giving .
- ed-current/next... another arg
-
-
- Individual patch file: c-return-patch.lisp
- Make ed-newline-and-indent kill selection, then get position.
-
-
- Individual patch file: call-next-method-patch.lisp
- Since DEFMETHOD was updated to expand into an FLET of CALL-NEXT-METHOD,
- all methods which CALL-NEXT-METHOD have advertised that they give
- arguments to CALL-NEXT-METHOD. This causes the method combination code
- to generate slower and bigger code. This patch fixes the problem.
- Also make DYNAMIC-EXTENT declarations for #'CALL-NEXT-METHOD and
- #'NEXT-METHOD-P have an affect.
-
-
- Individual patch file: check-gf-args-patch.lisp
- Make arg checking of a call to a generic function work except for keys.
- Also, check for even length tail when calling a function that
- accepts keys, even if the exact keys are unknown or &allow-other-key.
-
-
- Individual patch file: close-step-window-patch.lisp
- Make window-close throw iff closing the current step window
-
-
- Individual patch file: debugger-paste-patch.lisp
- Changing the value of a closed over value cell in the debugger
- now works correctly.
-
-
- Individual patch file: declare-inline-patch.lisp
- The file compiler no longer forgets the source for
- functions that were declared to be inline.
-
-
- Individual patch file: defgeneric-cerror-patch.lisp
- Make defgeneric cerror on a change of lambda-list, just like
- defmethod does.
-
-
- Individual patch file: defmethod-traced-patch
- Fix call to find-method so encapsulations will be moved
- and (more important) so untracing won't put back the old definition!
-
-
- Individual patch file: defstruct-patch.lisp
- Patch makes the following work "as expected".
- #|
- (defstruct foo x)
-
- You'll have to proceed through a cerror here.
- (defclass foo ()
- ((x :accessor foo-x :initform 1)))
-
- This function should not compile the foo-x in-line
- (that's the point of the patch).
- (defun bar (foo)
- (foo-x foo))
- |#
-
-
- Individual patch file: directory patch
- %one-wild - don't resolve alias unless it matches
- directory, %directory, %all-directories avoid indirect circles
- when resolving aliases.
- Fix (directory "*:abcd:" :directories t).
- Make %file*= - ALWAYS put the length back (fixes a crock in directory)
-
-
- Individual patch file: disable-selection-patch.lisp
- Disable the selection in the old key handler if a new one is
- selected by clicking on it with the mouse.
- Also, remove some of the blinking caused by set-selection-range.
-
-
- Individual patch file: dribble-fresh-line-patch.lisp
- Make stream-fresh-line work correctly on the DRIBBLE output
- and on output file streams.
-
-
- Individual patch file: earlier-fasl-type-patch.lisp
- Set the mac-file-type of a fasl file at creation time
- rather than after opening it.
- This prevents AUFS from doing character translation on it.
-
-
- Individual patch file: ensure-on-screen-patch.lisp
- Window-ensure-on-screen now calls view-default-position & view-default-size
- before using the wired in defaults.
-
-
- Individual patch file: equal-patch.lisp
- Make EQUAL work for non-simple strings and bit-vectors.
-
-
- Individual patch file: eval-debind-patch.lisp
- Fix to destructuring bind.
-
-
- Individual patch file: eventhook-patch.lisp
- Don't bind *EVENTHOOK* to NIL in break-loop.
- Instead, keep an *eventhooks-in-progress* list so
- that we don't reenter an erroring eventhook.
-
-
- Individual patch file: find-arg-mactype-patch.lisp
- Make DEFTRAP argument types work with or without a colon.
-
-
- Individual patch file: flush-output-patch.lisp
- Make FLUSH-OUTPUT on a file stream do #_FlushVol
-
-
- Individual patch file: focus-view-patch.lisp
- call-with-focused-view becomes a generic function at
- Mike Engber's suggestion.
-
-
- Individual patch file: fred-cursor-patch.lisp
- Clicking on a fred-mixin now changes the cursor with
- update-cursor, not set-cursor.
-
-
- Individual patch file: fred-package-patch.lisp
- Don't set-fred-package to NIL when initializing a fred window
- This prevents clone-window from changing the package.
-
-
- Individual patch file: get-time-zone-patch.lisp
- Return negative numbers for east of GMT (sheesh!)
-
-
- Individual patch file: hash-table-patch.lisp
- Fix infinite loop in do-rehash.
- The problem was when an EQUAL (or EQUALP) hash table contained
- both a key whose address was used to compute the hash code
- and a key the address of one of whose components was used to
- compute the hash code. If the EGC was enabled and the former key
- was ephemeral, the hash table could get in a state where it did
- not rehash after an EGC as it needed to. If a puthash was done
- on the former key, a duplicate value was entered in the hash table.
- ;
- clrhash now clears the bits that control rehashing.
- ;
- do-rehash cerror's on duplicate keys and will remove them if
- the user continues from the error.
- ;
- Also, puthash no longer makes nhash.vector.deleted-count become
- negative for weak hash tables.
- This could cause the table to become full and think it didn't
- need to grow: infinite loop time.
- ;
- clrhash calls $sp-eventch now and then so it won't be uninterruptable
- for long periods when clearing big hash tables under MacVM.
- ;
- grow-hash-table no longer throws away nhash.vector.weak-deletions-count.
- Decrementers of nhash.vector.deleted-count also update
- nhash.vector.weak-deletions-count, when appropriate.
- These two keep weak hash tables from thinking they have more
- entries than they really do.
-
-
- Individual patch file: indent-THE-patch.lisp
- (pushnew '(the . 1) *fred-special-indent-alist*
- :key 'car)
-
-
- Individual patch file: index-stream-patch.lisp
- Fix resource contention problem for interface index streams.
- Works by saving the stream-position if event processing
- uses the *accessing-index-stream*.
-
-
- Individual patch file: inline-car-cdr-patch.lisp
- The following code no longer generates type-unsafe code
- #|
- (defun my-car (x)
- (the list (car x)))
-
- (defun my-cdr (x)
- (the list (cdr x)))
- |#
-
-
- Individual patch file: set-file-position-patch.lisp
- (file-position stream new-position) used to sometimes forget
- characters written following the old end of file.
-
-
- Individual patch file: m-g-patch.lisp
- Ed-grab-last-input (m-g) now handles negative inputs.
-
-
- Individual patch file: make-load-form-patch.lisp
- Fix make-load-form-saving-slots bug:
- #|
- (defstruct a-struct slot-a slot-b)
-
- This form no longer causes (%svref nil 4)
- (make-load-form-saving-slots (make-a-struct) '(slot-a))
-
- This form now makes load form for no slots instead of all slots
- (make-load-form-saving-slots (make-a-struct) nil)
- |#
-
-
- Individual patch file: method-slot-name-patch.lisp
- Method-slot-name now looks inside of encapsulations.
- This makes tracing accessor methods work correctly.
-
-
- Individual patch file: open-coded-aref-patch.lisp
- Make nx2-vref put the result of the aref below in the right register.
- #|
- (defun test (data offset)
- (declare (optimize (safety 0) (speed 3)))
- (declare (type (simple-array (unsigned-byte 8) 1) data))
- (ash (aref data offset) 24))
- |#
-
-
- Individual patch file: post-2.0-compiler-patch.lisp
- Fix typo in dotimes compiler-macro.
-
-
- Individual patch file: pprint-dispatch.lisp
-
-
- Individual patch file: psetf-patch.lisp
- PSETF failed miserably if any of the value forms were not symbols
-
-
- Individual patch file: radio-button-patch.lisp
- It now works to add radion buttons to a view before
- adding the view to a window.
-
-
- Individual patch file: report-eval-abort-patch.lisp
- Report an abort of an evaluation from a fred buffer in its mini-buffer.
-
-
- Individual patch file: require-help-manager-patch.lisp
- Don't ignore-errors around auto-requiring the help-manager.
- Instead, don't try the require if the file doesn't exist
-
-
- Individual patch file: save-application-patch.lisp
- Close the output file if save-application errors
- before quitting.
-
-
- Individual patch file: set-control-text-patch.lisp
- The set-dialog-item-text method for control-dialog-item
- should be a primary method, not an after method, so that
- users can change the args.
-
-
- Individual patch file: set-part-color-patch.lisp
- (method set-part-color (control-dialog-item t t)) needs to focus
-
-
- Individual patch file: setf-apply-patch.lisp
- (setf (apply #'f ...) value) used to cons.
-
-
- Individual patch file: setf-GETF-and-THE-patch.lisp
- Make define-setf-method's for THE & GETF pass the environment to
- get-setf-method
-
-
- Individual patch file: table-scrolling-patch.lisp
- Make the scroll bars operational on both tables if two table-dialog-item's
- are subviews of two different views contained in the same window.
- The problem was that #_LClick calls #_FindControl which assumes
- all the controls are in the same coordinate system.
- This code depends on #_FindControl returning the last control
- t finds.
-
-
- Individual patch file: trace-eql-patch.lisp
- Gake trace work for eql methods.
-
-
- Individual patch file: translate-pathname-patch.lisp
- Fixes translate-pathname when to is **.
-
-
- Individual patch file: trap-doc-patch.lisp
- Make documentation work correctly for traps.
-
-
- Individual patch file: untrace-patch.lisp
- Allow (untrace ((:method ..))) as well as (untrace (:method ..)).
-
-
- Individual patch file: windoid-type-patch.lisp
- Make the :window-type initarg do the obvious thing for windoids.
-
-
- Individual patch file: window-under-patch.lisp
- Invisible windows are no longer passed events from windoids.
-
-